| Conditions | 5 |
| Total Lines | 39 |
| Code Lines | 32 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | import {error, info, success, warning} from '../utils/console' |
||
| 26 | switchPhpVersionTo = async (phpVersion: string): Promise<void> => { |
||
| 27 | const currentPhpVersion = await getLinkedPhpVersion() |
||
| 28 | |||
| 29 | if (!supportedPhpVersions.includes(phpVersion)) { |
||
| 30 | throw Error(`Invalid PHP version. Please pick one of the following version: ${supportedPhpVersions.join(', ')}`) |
||
| 31 | } |
||
| 32 | |||
| 33 | if (currentPhpVersion.versionName === phpVersion) { |
||
| 34 | warning(`PHP ${phpVersion} is already active.`) |
||
| 35 | return |
||
| 36 | } |
||
| 37 | |||
| 38 | const newPhpVersion = getPhpFpmByName(`php@${phpVersion}`) |
||
| 39 | |||
| 40 | if (newPhpVersion.isEndOfLife) { |
||
| 41 | console.warn('This PHP version is End Of Life. Be aware it might contain security flaws.') |
||
| 42 | console.warn('Please check http://php.net/supported-versions.php for more information.') |
||
| 43 | } |
||
| 44 | |||
| 45 | // Make sure the PHP version is installed. |
||
| 46 | const isVersionInstalled = await client().packageManager.packageIsInstalled(newPhpVersion.service) |
||
| 47 | |||
| 48 | if (!isVersionInstalled) { |
||
| 49 | info(`PHP ${newPhpVersion.versionName} not found, installing now...`) |
||
| 50 | await client().packageManager.install(newPhpVersion.service, false) |
||
| 51 | info(`Configuring PHP ${newPhpVersion.versionName}...`) |
||
| 52 | await newPhpVersion.configure() |
||
| 53 | } |
||
| 54 | |||
| 55 | await currentPhpVersion.unLinkPhpVersion() |
||
| 56 | |||
| 57 | // TODO: Relink some libs like libjpeg etc. |
||
| 58 | |||
| 59 | await newPhpVersion.linkPhpVersion() |
||
| 60 | |||
| 61 | await currentPhpVersion.stop() |
||
| 62 | await newPhpVersion.start() |
||
| 63 | |||
| 64 | success(`Successfully switched to PHP ${newPhpVersion.versionName}.`) |
||
| 65 | } |
||
| 69 | export default UseController |